//  专门处理对象相关的模块
/**
 * @method stringify 方法名称,转换对象为字符串用&连接
 * @param {Object} obj 需要转换的对象
 */
export const toSstringify = (obj: any) => {
  if (typeof obj !== 'object') {
    throw new TypeError(`请传入对象`);
  }
  return Object.keys(obj).map(key => {
    if (Array.isArray(obj[key])) {
      // 如果值是数组，例如 { id: ['xxx', 'yyy'] }，则每个元素都转换为 key=value 的形式
      return obj[key].map((value: any) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join(
        '&');
    } else {
      // 否则，直接将 key=value 的形式返回
      return `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;
    }
  }).join('&');
}

/**
 * @method toParse 方法名称,截取链接内的参数
 * @param {url} obj 需要转换的对象
 */
export const toParse = (url: string): object => {
  let urlData = {}
  if (url.indexOf('?') === -1) return {}
  let urlArr = url.split('?')
  let urlParams = urlArr[1] ? urlArr[1].split('&') : [];
  urlParams.map((item) => {
    let itemArr = item.split('=')
    if (itemArr[0] && itemArr[1]) {
      (urlData as any)[decodeURIComponent(itemArr[0])] = decodeURIComponent(itemArr[1]);
    } else if (itemArr[0]) {
      (urlData as any)[decodeURIComponent(itemArr[0])] = '';
    }
  })
  return urlData
}

